--- /dev/null
+use glib::translate::{from_glib_full, FromGlibPtrFull};
+use glib::GString;
+use glib_sys::{g_free, gpointer};
+use std::fmt;
+
+pub struct Checksum {
+ bytes: *mut [u8; 32],
+}
+
+impl Checksum {
+ pub(crate) unsafe fn new(bytes: *mut [u8; 32]) -> Checksum {
+ assert!(!bytes.is_null());
+ Checksum { bytes }
+ }
+
+ fn to_gstring(&self) -> GString {
+ unsafe { from_glib_full(ostree_sys::ostree_checksum_from_bytes(self.bytes)) }
+ }
+}
+
+impl Drop for Checksum {
+ fn drop(&mut self) {
+ unsafe {
+ g_free(self.bytes as gpointer);
+ }
+ }
+}
+
+impl FromGlibPtrFull<*mut [u8; 32]> for Checksum {
+ unsafe fn from_glib_full(ptr: *mut [u8; 32]) -> Self {
+ Checksum::new(ptr)
+ }
+}
+
+impl fmt::Display for Checksum {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ write!(f, "{}", self.to_gstring())
+ }
+}
pub use crate::auto::*;
// handwritten code
+mod checksum;
#[cfg(any(feature = "v2018_6", feature = "dox"))]
mod collection_ref;
#[cfg(any(feature = "v2019_3", feature = "dox"))]
mod repo;
#[cfg(any(feature = "v2018_2", feature = "dox"))]
mod repo_checkout_at_options;
+pub use crate::checksum::*;
#[cfg(any(feature = "v2018_6", feature = "dox"))]
pub use crate::collection_ref::*;
#[cfg(any(feature = "v2019_3", feature = "dox"))]